Session Initiation Protocol (SIP) is an open signaling protocol for establishing many kinds of real-time communication sessions. Examples of the types of communication sessions that may be established using SIP include voice, video, and/or instant messaging. These communication sessions may be carried out on any type of communication device such as a personal computer, laptop computer, Personal Digital Assistant, telephone, mobile phone, cellular phone, or the like. One key feature of SIP is its ability to use an end-user's Address of Record (AOR) as a single unifying public address for all communications. Thus, in a world of SIP-enhanced communications, a user's AOR becomes their single address that links the user to all of the communication devices associated with the user. Using this AOR, a caller can reach any one of the user's communication devices, also referred to as User Agents (UAs) without having to know each of the unique device addresses or phone numbers.
Many SIP communications are enhanced by virtue of the fact that an application is inserted or included into the communication session during the establishment of that session. The incorporation of applications into a communication session is typically referred to as application sequencing because the applications are sequentially invoked during the establishment of the communication session. In some instances the applications are owned and operated by an enterprise that is administering the SIP network. In some instances, the applications may be provided by third-party vendors. In either event, the traditional way in which applications were included in the communication session was during the communication session establishment stage so that these applications can insert themselves into the signaling and media path of the communication session.
Exemplary types of applications that may be utilized for a communication session include, without limitation, call recording applications, communication log applications, conferencing applications, security applications, encryption applications, collaboration applications, whiteboard applications, mobility applications, presence applications, media applications, messaging applications, bridging applications, and any other type of application that can supplement or enhance communications.
There is currently no good way in a distributed network to ensure that applications can provide media services on a per-party basis regardless of call topology and intermediate applications. There is also no good solution which allows an application to become aware of and control a communication session after that session has been established. There is also no good way to share media resources across multiple applications.
In addition to the above-described shortcomings, there are also no good solutions for providing a real-time centralized communication log. Currently available communication logs will also not indicate when a call was addressed to an individual but redirected by a sequenced application. In addition to these shortcomings, there is currently no way to distribute communication log information to non-involved participants in real-time, which means that endpoints do not get “live” updates of calls in progress and, therefore, do not have an opportunity to become aware of and control those calls.